package cn.actoncode.boot.framework.zhipu.core.bean;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.util.List;

@Data
public class ChatGLMV4Response {

    /**
     * 智谱AI开放平台生成的任务订单号，调用请求结果接口时请使用此订单号
     */
    private String id;

    /**
     * 请求创建时间，是以秒为单位的Unix时间戳。
     */
    private Long created;

    /**
     * 用于区分每次请求的唯一标识编号
     */
    @JSONField(name = "request_id")
    private String requestId;

    /**
     * 调用的模型编码
     */
    private String model;

    /**
     * 当前对话的模型输出内容
     */
    private List<Choices> choices;

    /**
     * 结束时返回本次模型调用的 tokens 数量统计
     */
    private Usage usage;

    @Data
    public static class Choices {

        /**
         * 结果下标
         **/
        private Integer index;

        /**
         * 模型推理终止的原因。
         * stop代表推理自然结束或出发停止词。
         * tool_calls 代表模型命中函数。
         * length 代表到达 tokens 长度上限。
         **/
        @JSONField(name = "finish_reason")
        private String finishReason;

        /**
         * 模型返回的文本信息
         */
        private Message message;
    }

    @Data
    public static class Message {

        /**
         * 本条信息作者的角色，可选择user 或 assistant
         * - user 指用户角色输入的信息
         * - assistant 指模型返回的信息
         */
        private String role;

        /**
         * 本条信息的具体内容
         */
        private String content;
    }

    @Data
    public static class Usage {

        /**
         * 用户输入的 tokens 数量
         */
        @JSONField(name = "prompt_tokens")
        private Integer promptTokens;

        /**
         * 模型输出的 tokens 数量
         */
        @JSONField(name = "completion_tokens")
        private Integer completionTokens;

        /**
         * 总 tokens 数量
         */
        @JSONField(name = "total_tokens")
        private Integer totalTokens;
    }


}
